﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Sistema.Modelo;
using Sistema.Dao;
using System.Data.SqlClient;
using Sistema.Visao.Pessoa.Cidade;

namespace Sistema.Visao.Pessoa.Estado
{//abre namespace
    public partial class formEstado : Form
    {//abre o formEstado
        EstadoMod mod = new EstadoMod();// variavel da classe modelo
        EstadoDao dao = new EstadoDao();// variavel da classe dao
        string estado, sigla;
        int codEstado, codPais, linha,op = 1;
        Boolean tipo;//opcão de cadastro e alteração
        dataCidade form;
      

        //Contrutor para comunicar com o form datacidade
        public formEstado(dataCidade cidade, int opcao)
        {
            InitializeComponent();
            form = cidade;
            op = opcao;
        }

        //contrutor padrao
        public formEstado()
        {
            InitializeComponent();
        }

        public void pegadados()//metodo para pegar valores na grid
        {//abre pegadados

            if (dgEstado.RowCount == 0)//confere se grid está vazio
            {//abre if
                //se a tabela estiver vazia exibir label com msg e desabilitar botoes
                cbTipoPesquisa.Enabled = false;
                tbCampoPesquisar.Enabled = false;
                btPesquisar.Enabled = false;
                btAdicionar.Enabled = false;
                lbMsg.Visible = true;
                dgEstado.Visible = false;
            }//fecha if
            else
            {//abre else
                //se nao pega dados da tabela e habilita botoes
                //habilita e desabilita itens
                cbTipoPesquisa.Enabled = true;
                tbCampoPesquisar.Enabled = true;
                btPesquisar.Enabled = true;
                btAdicionar.Enabled = true;
                dgEstado.Visible = true;
                lbMsg.Visible = false;
                //pega valores
                linha = dgEstado.CurrentRow.Index;//variavel linha recebe posição da seleção na tabela
                estado = dgEstado.Rows[linha].Cells[2].Value.ToString();//pega valor do estado na tabela
                codEstado = Convert.ToInt16(dgEstado.Rows[linha].Cells[0].Value.ToString());//pega codigo estado na tabela
                sigla = dgEstado.Rows[linha].Cells[3].Value.ToString();//pega valor da sigla na tabela
                codPais =  Convert.ToInt16(dgEstado.Rows[linha].Cells[1].Value.ToString());//pela valor do codigo pais na tabela
            }//fecha else
        }//fecha pegadados

        public void AtualizarGrid(int Selecao, String Busca)//MEtodo para carregar o data Grid atraves de coneção com o banco utilizando a camada dao
        {//abre atualizaGrid

            dao.SelecionarEstado(Busca, Selecao);
            SqlDataAdapter i = dao.getSelect();
            DataTable da = new DataTable();
            i.Fill(da);
            dgEstado.DataSource = da;
            //altera o nome dos campos da coluna
            dgEstado.Columns[0].HeaderText = "Código";
            dgEstado.Columns[2].HeaderText = "Estado";
            dgEstado.Columns[3].HeaderText = "Sigla";
            //define o tamanho das colunas do grid
            dgEstado.Columns[0].Width = 50;
            dgEstado.Columns[2].Width = 250;
            dgEstado.Columns[3].Width = 130;
            //colocando os valores da coluna data_de_cadastro invisivel no grid
            dgEstado.Columns[1].Visible = false;
            dgEstado.Columns[4].Visible = false;
            }//fecha atualizaGrid

        private void formEstado_Load(object sender, EventArgs e)
        {//abre o load
            if (op == 1)
            {//abre o if
                AtualizarGrid(0, "");//atualiza o grid
                pegadados();//pega os dados na tabela
                cbCampoPesquisa.SelectedIndex = 0;//define a posição inicial do combo
                cbTipoPesquisa.SelectedIndex = 0;//define a posição inicial do combo
                btAdicionar.Visible = false;//botao adicionar falso 
            }//fecha o if
            else
            {//abre o else
                AtualizarGrid(0, "");//atualiza o grid
                pegadados();//pega os dados na tabela
                cbCampoPesquisa.SelectedIndex = 0;//define a posição inicial do combo
                cbTipoPesquisa.SelectedIndex = 0;//define a posição inicial do combo
                btAdicionar.Visible = true;//botao adicionar ativado 
            }//fecha o else
        }//fecha o load

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            tipo = true;//tipo true para cadastro
            dataEstado vai = new dataEstado(this, tipo);//chama o dataEstado com o tipo true para cadastro
            vai.ShowDialog();
        }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            tipo = false;//tipo false para alteração
            dataEstado vai = new dataEstado(this, estado, tipo, codEstado, sigla, codPais);//chama o dataEstado para alteração e passa valores
            vai.ShowDialog();
        }

        private void toolStripButton3_Click(object sender, EventArgs e)
        {
          //falta excluir
        }
        
        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            pegadados();//pega dados enquanto usuario clica na cecula do grid
        }

        private void button1_Click(object sender, EventArgs e)
        { //abre o botao pesquisa
            if (cbCampoPesquisa.SelectedIndex == 0)//pesquisa por Estado
            {//abre o if1
                if (cbTipoPesquisa.SelectedIndex == 0)//Que contenha
                {//abre o if2
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(1, tbCampoPesquisar.Text);
                }//fecha o if2
                else if (cbTipoPesquisa.SelectedIndex == 1)//Que inicie com
                {//abre o elseif 1
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(2, tbCampoPesquisar.Text);
                }//fecha o elseif1
                else if (cbTipoPesquisa.SelectedIndex == 2)//Que seja igual a
                {//abre o elseif 2
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(3, tbCampoPesquisar.Text);
                }//fecha o elseif2
            }//fecha o if1
            else if (cbCampoPesquisa.SelectedIndex == 1)//pesquisa por sigla
            {//abre o else if 3
                if (cbTipoPesquisa.SelectedIndex == 0)//Que contenha
                {//abre o if 3
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(4, tbCampoPesquisar.Text);
                }//fecha o if 3
                else if (cbTipoPesquisa.SelectedIndex == 1)//Que inicie com
                {//abre o elseif 4
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(5, tbCampoPesquisar.Text);
                }//fecha o elseif 4
                else if (cbTipoPesquisa.SelectedIndex == 2)//Que seja igual a
                {//abre o elseif 5
                    //chama o metodo para atualizar o grid passando como parametro o tipo da pesquisa e o valor da pesquisa
                    AtualizarGrid(6, tbCampoPesquisar.Text);
                }//fecha o elseif 5
            }//fecha o else if 3
        }//fecha o botao

        private void button2_Click(object sender, EventArgs e)
        {//passa valores para o próximo form
            form.cbEstado.Text = estado;
            form.cbCodigo.Text = Convert.ToString(codEstado);
            form.tbEstado.Text = estado;
            this.Hide();
        }

        private void btPesquisar_Click(object sender, EventArgs e)
        {
            this.Hide();//fecha o form
        }
    }//fecha o form
}//fecha o namespace
